const gettime = {
    // 计算当前时间指定时间后的时间
    setTime(millisecond) {
        let t = (new Date().getTime() + millisecond) //24小时 * 60分钟 * 60秒 * 1000
        let d = new Date(t)
        let theMonth = d.getMonth() + 1
        let theDate = d.getDate()
        let theHours = d.getHours()
        let theMinutes = d.getMinutes()
        let theSeconds = d.getSeconds()
        if (theMonth < 10) {
            theMonth = '0' + theMonth
        }
        if (theDate < 10) {
            theDate = '0' + theDate
        }
        if (theHours < 10) {
            theHours = '0' + theHours
        }
        if (theMinutes < 10) {
            theMinutes = '0' + theMinutes
        }
        let date = d.getFullYear() + '-' + theMonth + '-' + theDate
        let time = theHours + ':' + theMinutes + ':' + theSeconds
        let Spare = date + ' ' + time
        return Spare
    },
    //获取当前日期前后duration的日期
    getCurrentIntervalDate(duration) {
        let myDate = new Date(); //获取今天日期
        myDate.setDate(myDate.getDate() + duration);
        let dateArray = [];
        let dateTemp;
        let flag = 1;
        duration = duration < 0 ? -duration : duration
        for (let i = 0; i < duration + 1; i++) {
            dateTemp = (myDate.getMonth() + 1) + "-" + myDate.getDate();
            dateArray.push(dateTemp);
            myDate.setDate(myDate.getDate() + flag);
        }
        return dateArray
    },
    // 获取当前时间的格式化时间
    formatTime() {
        let d = new Date()
        let theMonth = d.getMonth() + 1
        let theDate = d.getDate()
        let theHours = d.getHours()
        let theMinutes = d.getMinutes()
        let theSeconds = d.getSeconds()
        if (theMonth < 10) {
            theMonth = '0' + theMonth
        }
        if (theDate < 10) {
            theDate = '0' + theDate
        }
        if (theHours < 10) {
            theHours = '0' + theHours
        }
        if (theMinutes < 10) {
            theMinutes = '0' + theMinutes
        }
        let date = d.getFullYear() + '-' + theMonth + '-' + theDate
        let time = theHours + ':' + theMinutes + ':' + theSeconds
        let Spare = date + ' ' + time
        return Spare
    },
    // 获取当前时间的格式化时间(年月日)
    formatTime1() {
        let d = new Date()
        let theMonth = d.getMonth() + 1
        let theDate = d.getDate()
        if (theMonth < 10) {
            theMonth = '0' + theMonth
        }
        if (theDate < 10) {
            theDate = '0' + theDate
        }
        let date = d.getFullYear() + '-' + theMonth + '-' + theDate
        return date
    },
    // 比较时间大小
    compareDate(date1, date2) {
        var oDate1 = new Date(date1);
        var oDate2 = new Date(date2);
        //  第一个大 true; //第二个大false
        return oDate1.getTime() > oDate2.getTime()
    },
    // 比较时间大小（与当前时间）
    compareDateForToday(date1) {
        var oDate1 = new Date(date1);
        var oDate2 = new Date();
        // false 第一个大 true; //第二个大
        return oDate1.getTime() >= oDate2.getTime()
    },
    // 获取格式化时间
    formatOnlyTime(times) {
        let d = new Date(times)
        let theMonth = d.getMonth() + 1
        let theDate = d.getDate()
        let theHours = d.getHours()
        let theMinutes = d.getMinutes()
        let theSeconds = d.getSeconds()
        if (theMonth < 10) {
            theMonth = '0' + theMonth
        }
        if (theDate < 10) {
            theDate = '0' + theDate
        }
        if (theHours < 10) {
            theHours = '0' + theHours
        }
        if (theMinutes < 10) {
            theMinutes = '0' + theMinutes
        }
        let date = d.getFullYear() + '-' + theMonth + '-' + theDate
        let time = theHours + ':' + theMinutes + ':' + theSeconds
        let Spare = date + ' ' + time
        return Spare
    },
    // 计算当前日期星座
    getHoroscope(date) {
        let c = ['摩羯', '水瓶', '双鱼', '白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手', '摩羯']
        date = new Date(date);
        let month = date.getMonth() + 1;
        let day = date.getDate();
        let startMonth = month - (day - 14 < '865778999988'.charAt(month));
        return c[startMonth] + '座';
    },
    // 计算指定时间与当前的时间差
    sumAge(data) {
        let dateBegin = new Date(data.replace(/-/g, "/"));
        let dateEnd = new Date();//获取当前时间
        let dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
        let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
        let leave1 = dateDiff % (24 * 3600 * 1000)    //计算天数后剩余的毫秒数
        let hours = Math.floor(leave1 / (3600 * 1000))//计算出小时数
        //计算相差分钟数
        let leave2 = leave1 % (3600 * 1000)    //计算小时数后剩余的毫秒数
        let minutes = Math.floor(leave2 / (60 * 1000))//计算相差分钟数
        //计算相差秒数
        let leave3 = leave2 % (60 * 1000)      //计算分钟数后剩余的毫秒数
        let seconds = Math.round(leave3 / 1000)
        return dayDiff + "天 " + hours + "小时 ";
    },
    // 获取聊天时间（相差300s内的信息不会显示时间）
    getChatTime(v1, v2) {
        v1 = v1.toString().length < 13 ? v1 * 1000 : v1;
        v2 = v2.toString().length < 13 ? v2 * 1000 : v2;
        console.log()
        if (((parseInt(v1) - parseInt(v2)) / 1000) > 300) {
            return this.gettime(v1, v2);
        }
    },
    // 人性化时间格式
    gettime(shorttime, lastTime) {
        shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime;
        let now = (new Date()).getTime();
        let cha = (now - parseInt(shorttime)) / 1000;
        if (cha === 0) {
            cha = (parseInt(shorttime) - lastTime) / 1000
        }
        if (cha < 1440) {
            // 当天
            return this.dateFormat(new Date(shorttime), "{A} {t}:{ii}");
        } else if (cha < 518400) {
            // 隔日和隔月 显示日期+时间
            return this.dateFormat(new Date(shorttime), "{MM}月{DD}日 {A} {t}:{ii}");
        } else {
            // 隔年 显示完整日期+时间
            return this.dateFormat(new Date(shorttime), "{Y}-{MM}-{DD} {A} {t}:{ii}");
        }
    },

    parseNumber(num) {
        return num < 10 ? "0" + num : num;
    },

    dateFormat(date, formatStr) {
        let dateObj = {},
            rStr = /\{([^}]+)\}/,
            mons = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'];

        dateObj["Y"] = date.getFullYear();
        dateObj["M"] = date.getMonth() + 1;
        dateObj["MM"] = this.parseNumber(dateObj["M"]);
        dateObj["Mon"] = mons[dateObj['M'] - 1];
        dateObj["D"] = date.getDate();
        dateObj["DD"] = this.parseNumber(dateObj["D"]);
        dateObj["h"] = date.getHours();
        dateObj["hh"] = this.parseNumber(dateObj["h"]);
        dateObj["t"] = dateObj["h"] > 12 ? dateObj["h"] - 12 : dateObj["h"];
        dateObj["tt"] = this.parseNumber(dateObj["t"]);
        dateObj["A"] = dateObj["h"] > 12 ? '下午' : '上午';
        dateObj["i"] = date.getMinutes();
        dateObj["ii"] = this.parseNumber(dateObj["i"]);
        dateObj["s"] = date.getSeconds();
        dateObj["ss"] = this.parseNumber(dateObj["s"]);

        while (rStr.test(formatStr)) {
            formatStr = formatStr.replace(rStr, dateObj[RegExp.$1]);
        }
        return formatStr;
    },
    // 获取年龄
    getAgeByBirthday(data) {
        let birthday = new Date(data.replace(/-/g, "\/"));
        let d = new Date();
        return d.getFullYear() - birthday.getFullYear() - ((d.getMonth() < birthday.getMonth() || d.getMonth() == birthday.getMonth() && d.getDate() < birthday.getDate()) ? 1 : 0);
    }
}

export default {
    gettime
}